home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / CIncludes / QuickTimeVR.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  33.9 KB  |  1,093 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QuickTimeVR.h
  3.  
  4.      Contains:    QuickTime VR interfaces
  5.  
  6.      Version:    Technology:    QuickTime VR 2.1
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QUICKTIMEVR__
  18. #define __QUICKTIMEVR__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21. #include <ConditionalMacros.h>
  22. #endif
  23. #ifndef __DIALOGS__
  24. #include <Dialogs.h>
  25. #endif
  26. #ifndef __MOVIES__
  27. #include <Movies.h>
  28. #endif
  29.  
  30.  
  31.  
  32. #if PRAGMA_ONCE
  33. #pragma once
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. #if PRAGMA_IMPORT
  41. #pragma import on
  42. #endif
  43.  
  44. #if PRAGMA_STRUCT_ALIGN
  45.     #pragma options align=mac68k
  46. #elif PRAGMA_STRUCT_PACKPUSH
  47.     #pragma pack(push, 2)
  48. #elif PRAGMA_STRUCT_PACK
  49.     #pragma pack(2)
  50. #endif
  51.  
  52. /******************************************************************************
  53.  *                                                                           **
  54.  * ABOUT QTVR_OLD_CALLS:                                                     **
  55.  *                                                                           **
  56.  * NOTE: Define QTVR_OLD_CALLS to 1 for your application makefile/project    **
  57.  *       only if you are sure that you need to use the older calls for       **
  58.  *       compatibility with VR 2.0 and 2.0.1 on the Macintosh                ** 
  59.  *                                                                           **
  60.  *****************************************************************************/
  61. #ifndef QTVR_OLD_CALLS
  62. #define QTVR_OLD_CALLS 0
  63. #endif  /* !defined(QTVR_OLD_CALLS) */
  64.  
  65. typedef struct OpaqueQTVRInstance*         QTVRInstance;
  66.  
  67. /* Released API Version numbers */
  68. #define kQTVRAPIMajorVersion02  (0x02)
  69. #define kQTVRAPIMinorVersion00  (0x00)
  70. #define kQTVRAPIMinorVersion01  (0x01)
  71. #define kQTVRAPIMinorVersion10  (0x10)
  72.  
  73. /* Version numbers for the API described in this header */
  74. #define kQTVRAPIMajorVersion kQTVRAPIMajorVersion02
  75. #define kQTVRAPIMinorVersion kQTVRAPIMinorVersion10
  76.  
  77.  
  78.  
  79. enum {
  80.     kQTVRControllerSubType        = FOUR_CHAR_CODE('ctyp'),
  81.     kQTVRQTVRType                = FOUR_CHAR_CODE('qtvr'),
  82.     kQTVRPanoramaType            = FOUR_CHAR_CODE('pano'),
  83.     kQTVRObjectType                = FOUR_CHAR_CODE('obje'),
  84.     kQTVROldPanoType            = FOUR_CHAR_CODE('STpn'),        /* Used in QTVR 1.0 release*/
  85.     kQTVROldObjectType            = FOUR_CHAR_CODE('stna')        /* Used in QTVR 1.0 release*/
  86. };
  87.  
  88. #if TARGET_OS_MAC
  89. #define kQTVRUnknownType '????'        // Unknown node type
  90. #else
  91. #define kQTVRUnknownType '\?\?\?\?'    // Unknown node type
  92. #endif  /* TARGET_OS_MAC */
  93.  
  94. /* QTVR hot spot types*/
  95.  
  96. enum {
  97.     kQTVRHotSpotLinkType        = FOUR_CHAR_CODE('link'),
  98.     kQTVRHotSpotURLType            = FOUR_CHAR_CODE('url '),
  99.     kQTVRHotSpotUndefinedType    = FOUR_CHAR_CODE('undf')
  100. };
  101.  
  102. /* Special Values for nodeID in QTVRGoToNodeID*/
  103.  
  104. enum {
  105.     kQTVRCurrentNode            = 0,
  106.     kQTVRPreviousNode            = (long)0x80000000,
  107.     kQTVRDefaultNode            = (long)0x80000001
  108. };
  109.  
  110. /* Panorama correction modes used for the kQTVRImagingCorrection imaging property*/
  111.  
  112. enum {
  113.     kQTVRNoCorrection            = 0,
  114.     kQTVRPartialCorrection        = 1,
  115.     kQTVRFullCorrection            = 2
  116. };
  117.  
  118. /* Imaging Modes used by QTVRSetImagingProperty, QTVRGetImagingProperty, QTVRUpdate, QTVRBeginUpdate*/
  119.  
  120. enum {
  121.     kQTVRStatic                    = 1,
  122.     kQTVRMotion                    = 2,
  123.     kQTVRCurrentMode            = 0,                            /* Special Value for QTVRUpdate*/
  124.     kQTVRAllModes                = 100                            /* Special value for QTVRSetProperty*/
  125. };
  126.  
  127. typedef UInt32                             QTVRImagingMode;
  128. /* Imaging Properties used by QTVRSetImagingProperty, QTVRGetImagingProperty*/
  129.  
  130. enum {
  131.     kQTVRImagingCorrection        = 1,
  132.     kQTVRImagingQuality            = 2,
  133.     kQTVRImagingDirectDraw        = 3,
  134.     kQTVRImagingCurrentMode        = 100                            /* Get Only*/
  135. };
  136.  
  137. /* OR the above with kImagingDefaultValue to get/set the default value*/
  138.  
  139. enum {
  140.     kImagingDefaultValue        = (long)0x80000000
  141. };
  142.  
  143. /* Transition Types used by QTVRSetTransitionProperty, QTVREnableTransition*/
  144.  
  145. enum {
  146.     kQTVRTransitionSwing        = 1
  147. };
  148.  
  149. /* Transition Properties QTVRSetTransitionProperty*/
  150.  
  151. enum {
  152.     kQTVRTransitionSpeed        = 1,
  153.     kQTVRTransitionDirection    = 2
  154. };
  155.  
  156. /* Constraint values used to construct value returned by GetConstraintStatus*/
  157.  
  158. enum {
  159.     kQTVRUnconstrained            = 0L,
  160.     kQTVRCantPanLeft            = 1L << 0,
  161.     kQTVRCantPanRight            = 1L << 1,
  162.     kQTVRCantPanUp                = 1L << 2,
  163.     kQTVRCantPanDown            = 1L << 3,
  164.     kQTVRCantZoomIn                = 1L << 4,
  165.     kQTVRCantZoomOut            = 1L << 5,
  166.     kQTVRCantTranslateLeft        = 1L << 6,
  167.     kQTVRCantTranslateRight        = 1L << 7,
  168.     kQTVRCantTranslateUp        = 1L << 8,
  169.     kQTVRCantTranslateDown        = 1L << 9
  170. };
  171.  
  172. /* Object-only mouse mode values used to construct value returned by QTVRGetCurrentMouseMode*/
  173.  
  174. enum {
  175.     kQTVRPanning                = 1L << 0,                        /* standard objects, "object only" controllers*/
  176.     kQTVRTranslating            = 1L << 1,                        /* all objects*/
  177.     kQTVRZooming                = 1L << 2,                        /* all objects*/
  178.     kQTVRScrolling                = 1L << 3,                        /* standard object arrow scrollers and joystick object*/
  179.     kQTVRSelecting                = 1L << 4                        /* object absolute controller*/
  180. };
  181.  
  182. /* Properties for use with QTVRSetInteractionProperty/GetInteractionProperty*/
  183.  
  184. enum {
  185.     kQTVRInteractionMouseClickHysteresis = 1,                    /* pixels within which the mouse is considered not to have moved (UInt16)*/
  186.     kQTVRInteractionMouseClickTimeout = 2,                        /* ticks after which a mouse click times out and turns into panning (UInt32)*/
  187.     kQTVRInteractionPanTiltSpeed = 3,                            /* control the relative pan/tilt speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
  188.     kQTVRInteractionZoomSpeed    = 4,                            /* control the relative zooming speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
  189.     kQTVRInteractionTranslateOnMouseDown = 101,                    /* Holding MouseDown with this setting translates zoomed object movies (Boolean)*/
  190.     kQTVRInteractionMouseMotionScale = 102,                        /* The maximum angle of rotation caused by dragging across the display window. (* float)*/
  191.     kQTVRInteractionNudgeMode    = 103                            /* A QTVRNudgeMode: rotate, translate, or the same as the current mouse mode. Requires QTVR 2.1*/
  192. };
  193.  
  194. /* OR the above with kQTVRInteractionDefaultValue to get/set the default value*/
  195.  
  196. enum {
  197.     kQTVRInteractionDefaultValue = (long)0x80000000
  198. };
  199.  
  200.  
  201. /* Geometry constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  202.  
  203. enum {
  204.     kQTVRUseMovieGeometry        = 0,
  205.     kQTVRVerticalCylinder        = FOUR_CHAR_CODE('vcyl')
  206. };
  207.  
  208. /* Resolution constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  209.  
  210. enum {
  211.     kQTVRDefaultRes                = 0,
  212.     kQTVRFullRes                = 1L << 0,
  213.     kQTVRHalfRes                = 1L << 1,
  214.     kQTVRQuarterRes                = 1L << 2
  215. };
  216.  
  217. /* QTVR-specific pixelFormat constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  218.  
  219. enum {
  220.     kQTVRUseMovieDepth            = 0
  221. };
  222.  
  223. /* Cache Size Pref constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings*/
  224.  
  225. enum {
  226.     kQTVRMinimumCache            = -1,
  227.     kQTVRSuggestedCache            = 0,
  228.     kQTVRFullCache                = 1
  229. };
  230.  
  231. /* Angular units used by QTVRSetAngularUnits*/
  232.  
  233. enum {
  234.     kQTVRDegrees                = 0,
  235.     kQTVRRadians                = 1
  236. };
  237.  
  238. typedef UInt32                             QTVRAngularUnits;
  239. /* Values for enableFlag parameter in QTVREnableHotSpot*/
  240.  
  241. enum {
  242.     kQTVRHotSpotID                = 0,
  243.     kQTVRHotSpotType            = 1,
  244.     kQTVRAllHotSpots            = 2
  245. };
  246.  
  247. /* Values for kind parameter in QTVRGet/SetConstraints, QTVRGetViewingLimits*/
  248.  
  249. enum {
  250.     kQTVRPan                    = 0,
  251.     kQTVRTilt                    = 1,
  252.     kQTVRFieldOfView            = 2,
  253.     kQTVRViewCenterH            = 4,                            /* WrapAndConstrain only*/
  254.     kQTVRViewCenterV            = 5                                /* WrapAndConstrain only*/
  255. };
  256.  
  257. /* Values for setting parameter in QTVRSetAnimationSetting, QTVRGetAnimationSetting*/
  258.  
  259. enum {
  260.                                                                 /* View Frame Animation Settings*/
  261.     kQTVRPalindromeViewFrames    = 1,
  262.     kQTVRStartFirstViewFrame    = 2,
  263.     kQTVRDontLoopViewFrames        = 3,
  264.     kQTVRPlayEveryViewFrame        = 4,                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  265.                                                                 /* View Animation Settings*/
  266.     kQTVRSyncViewToFrameRate    = 16,
  267.     kQTVRPalindromeViews        = 17,
  268.     kQTVRPlayStreamingViews        = 18                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  269. };
  270.  
  271. typedef UInt32                             QTVRObjectAnimationSetting;
  272.  
  273. enum {
  274.     kQTVRWrapPan                = 1,
  275.     kQTVRWrapTilt                = 2,
  276.     kQTVRCanZoom                = 3,
  277.     kQTVRReverseHControl        = 4,
  278.     kQTVRReverseVControl        = 5,
  279.     kQTVRSwapHVControl            = 6,
  280.     kQTVRTranslation            = 7
  281. };
  282.  
  283. typedef UInt32                             QTVRControlSetting;
  284.  
  285. enum {
  286.     kQTVRDefault                = 0,
  287.     kQTVRCurrent                = 2,
  288.     kQTVRMouseDown                = 3
  289. };
  290.  
  291. typedef UInt32                             QTVRViewStateType;
  292.  
  293. enum {
  294.     kQTVRRight                    = 0,
  295.     kQTVRUpRight                = 45,
  296.     kQTVRUp                        = 90,
  297.     kQTVRUpLeft                    = 135,
  298.     kQTVRLeft                    = 180,
  299.     kQTVRDownLeft                = 225,
  300.     kQTVRDown                    = 270,
  301.     kQTVRDownRight                = 315
  302. };
  303.  
  304. typedef UInt32                             QTVRNudgeControl;
  305.  
  306. enum {
  307.     kQTVRNudgeRotate            = 0,
  308.     kQTVRNudgeTranslate            = 1,
  309.     kQTVRNudgeSameAsMouse        = 2
  310. };
  311.  
  312. typedef UInt32                             QTVRNudgeMode;
  313. /* Flags to control elements of the QTVR control bar (set via mcActionSetFlags) */
  314.  
  315. enum {
  316.     mcFlagQTVRSuppressBackBtn    = 1L << 16,
  317.     mcFlagQTVRSuppressZoomBtns    = 1L << 17,
  318.     mcFlagQTVRSuppressHotSpotBtn = 1L << 18,
  319.     mcFlagQTVRSuppressTranslateBtn = 1L << 19,
  320.     mcFlagQTVRSuppressHelpText    = 1L << 20,
  321.     mcFlagQTVRSuppressHotSpotNames = 1L << 21,
  322.     mcFlagQTVRExplicitFlagSet    = 1L << 31                        /* bits 0->30 should be interpreted as "explicit on" for the corresponding suppression bits*/
  323. };
  324.  
  325. /* Cursor types used in type field of QTVRCursorRecord*/
  326.  
  327. enum {
  328.     kQTVRUseDefaultCursor        = 0,
  329.     kQTVRStdCursorType            = 1,
  330.     kQTVRColorCursorType        = 2
  331. };
  332.  
  333. /* Values for flags parameter in QTVRMouseOverHotSpot callback*/
  334.  
  335. enum {
  336.     kQTVRHotSpotEnter            = 0,
  337.     kQTVRHotSpotWithin            = 1,
  338.     kQTVRHotSpotLeave            = 2
  339. };
  340.  
  341. /* Values for flags parameter in QTVRSetPrescreenImagingCompleteProc*/
  342.  
  343. enum {
  344.     kQTVRPreScreenEveryIdle        = 1L << 0                        /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  345. };
  346.  
  347. /* Values for flags field of areasOfInterest in QTVRSetBackBufferImagingProc*/
  348.  
  349. enum {
  350.     kQTVRBackBufferEveryUpdate    = 1L << 0,
  351.     kQTVRBackBufferEveryIdle    = 1L << 1,
  352.     kQTVRBackBufferAlwaysRefresh = 1L << 2
  353. };
  354.  
  355. /* Values for flagsIn parameter in QTVRBackBufferImaging callback*/
  356.  
  357. enum {
  358.     kQTVRBackBufferRectVisible    = 1L << 0,
  359.     kQTVRBackBufferWasRefreshed    = 1L << 1
  360. };
  361.  
  362. /* Values for flagsOut parameter in QTVRBackBufferImaging callback*/
  363.  
  364. enum {
  365.     kQTVRBackBufferFlagDidDraw    = 1L << 0,
  366.     kQTVRBackBufferFlagLastFlag    = 1L << 31
  367. };
  368.  
  369. /* QTVRCursorRecord used in QTVRReplaceCursor*/
  370.  
  371. struct QTVRCursorRecord {
  372.     UInt16                             theType;                    /* field was previously named "type"*/
  373.     SInt16                             rsrcID;
  374.     Handle                             handle;
  375. };
  376. typedef struct QTVRCursorRecord            QTVRCursorRecord;
  377.  
  378. struct QTVRFloatPoint {
  379.     float                             x;
  380.     float                             y;
  381. };
  382. typedef struct QTVRFloatPoint            QTVRFloatPoint;
  383. /* Struct used for areasOfInterest parameter in QTVRSetBackBufferImagingProc*/
  384.  
  385. struct QTVRAreaOfInterest {
  386.     float                             panAngle;
  387.     float                             tiltAngle;
  388.     float                             width;
  389.     float                             height;
  390.     UInt32                             flags;
  391. };
  392. typedef struct QTVRAreaOfInterest        QTVRAreaOfInterest;
  393. /*
  394.   =================================================================================================
  395.    Callback routines 
  396.   -------------------------------------------------------------------------------------------------
  397. */
  398.  
  399. typedef CALLBACK_API( OSErr , QTVRLeavingNodeProcPtr )(QTVRInstance qtvr, UInt32 fromNodeID, UInt32 toNodeID, Boolean *cancel, SInt32 refCon);
  400. typedef CALLBACK_API( OSErr , QTVREnteringNodeProcPtr )(QTVRInstance qtvr, UInt32 nodeID, SInt32 refCon);
  401. typedef CALLBACK_API( OSErr , QTVRMouseOverHotSpotProcPtr )(QTVRInstance qtvr, UInt32 hotSpotID, UInt32 flags, SInt32 refCon);
  402. typedef CALLBACK_API( OSErr , QTVRImagingCompleteProcPtr )(QTVRInstance qtvr, SInt32 refCon);
  403. typedef CALLBACK_API( OSErr , QTVRBackBufferImagingProcPtr )(QTVRInstance qtvr, Rect *drawRect, UInt16 areaIndex, UInt32 flagsIn, UInt32 *flagsOut, SInt32 refCon);
  404. typedef STACK_UPP_TYPE(QTVRLeavingNodeProcPtr)                     QTVRLeavingNodeUPP;
  405. typedef STACK_UPP_TYPE(QTVREnteringNodeProcPtr)                 QTVREnteringNodeUPP;
  406. typedef STACK_UPP_TYPE(QTVRMouseOverHotSpotProcPtr)             QTVRMouseOverHotSpotUPP;
  407. typedef STACK_UPP_TYPE(QTVRImagingCompleteProcPtr)                 QTVRImagingCompleteUPP;
  408. typedef STACK_UPP_TYPE(QTVRBackBufferImagingProcPtr)             QTVRBackBufferImagingUPP;
  409. enum { uppQTVRLeavingNodeProcInfo = 0x0000FFE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  410. enum { uppQTVREnteringNodeProcInfo = 0x00000FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  411. enum { uppQTVRMouseOverHotSpotProcInfo = 0x00003FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  412. enum { uppQTVRImagingCompleteProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  413. enum { uppQTVRBackBufferImagingProcInfo = 0x0003FBE0 };         /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  414. #define NewQTVRLeavingNodeProc(userRoutine)                     (QTVRLeavingNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRLeavingNodeProcInfo, GetCurrentArchitecture())
  415. #define NewQTVREnteringNodeProc(userRoutine)                     (QTVREnteringNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVREnteringNodeProcInfo, GetCurrentArchitecture())
  416. #define NewQTVRMouseOverHotSpotProc(userRoutine)                 (QTVRMouseOverHotSpotUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRMouseOverHotSpotProcInfo, GetCurrentArchitecture())
  417. #define NewQTVRImagingCompleteProc(userRoutine)                 (QTVRImagingCompleteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRImagingCompleteProcInfo, GetCurrentArchitecture())
  418. #define NewQTVRBackBufferImagingProc(userRoutine)                 (QTVRBackBufferImagingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRBackBufferImagingProcInfo, GetCurrentArchitecture())
  419. #define CallQTVRLeavingNodeProc(userRoutine, qtvr, fromNodeID, toNodeID, cancel, refCon)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppQTVRLeavingNodeProcInfo, (qtvr), (fromNodeID), (toNodeID), (cancel), (refCon))
  420. #define CallQTVREnteringNodeProc(userRoutine, qtvr, nodeID, refCon)  CALL_THREE_PARAMETER_UPP((userRoutine), uppQTVREnteringNodeProcInfo, (qtvr), (nodeID), (refCon))
  421. #define CallQTVRMouseOverHotSpotProc(userRoutine, qtvr, hotSpotID, flags, refCon)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppQTVRMouseOverHotSpotProcInfo, (qtvr), (hotSpotID), (flags), (refCon))
  422. #define CallQTVRImagingCompleteProc(userRoutine, qtvr, refCon)     CALL_TWO_PARAMETER_UPP((userRoutine), uppQTVRImagingCompleteProcInfo, (qtvr), (refCon))
  423. #define CallQTVRBackBufferImagingProc(userRoutine, qtvr, drawRect, areaIndex, flagsIn, flagsOut, refCon)  CALL_SIX_PARAMETER_UPP((userRoutine), uppQTVRBackBufferImagingProcInfo, (qtvr), (drawRect), (areaIndex), (flagsIn), (flagsOut), (refCon))
  424. /*
  425.   =================================================================================================
  426.     QTVR Intercept Struct, Callback, Routine Descriptors 
  427.   -------------------------------------------------------------------------------------------------
  428. */
  429.  
  430.  
  431. enum {
  432.     kQTVRSetPanAngleSelector    = 0x2000,
  433.     kQTVRSetTiltAngleSelector    = 0x2001,
  434.     kQTVRSetFieldOfViewSelector    = 0x2002,
  435.     kQTVRSetViewCenterSelector    = 0x2003,
  436.     kQTVRMouseEnterSelector        = 0x2004,
  437.     kQTVRMouseWithinSelector    = 0x2005,
  438.     kQTVRMouseLeaveSelector        = 0x2006,
  439.     kQTVRMouseDownSelector        = 0x2007,
  440.     kQTVRMouseStillDownSelector    = 0x2008,
  441.     kQTVRMouseUpSelector        = 0x2009,
  442.     kQTVRTriggerHotSpotSelector    = 0x200A,
  443.     kQTVRGetHotSpotTypeSelector    = 0x200B                        /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  444. };
  445.  
  446.  
  447. typedef UInt32                             QTVRProcSelector;
  448.  
  449. struct QTVRInterceptRecord {
  450.     SInt32                             reserved1;
  451.     SInt32                             selector;
  452.  
  453.     SInt32                             reserved2;
  454.     SInt32                             reserved3;
  455.  
  456.     SInt32                             paramCount;
  457.     void *                            parameter[6];
  458. };
  459. typedef struct QTVRInterceptRecord        QTVRInterceptRecord;
  460.  
  461. typedef QTVRInterceptRecord *            QTVRInterceptPtr;
  462. /* Prototype for Intercept Proc callback*/
  463. typedef CALLBACK_API( void , QTVRInterceptProcPtr )(QTVRInstance qtvr, QTVRInterceptPtr qtvrMsg, SInt32 refCon, Boolean *cancel);
  464. typedef STACK_UPP_TYPE(QTVRInterceptProcPtr)                     QTVRInterceptUPP;
  465. enum { uppQTVRInterceptProcInfo = 0x00003FC0 };                 /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  466. #define NewQTVRInterceptProc(userRoutine)                         (QTVRInterceptUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRInterceptProcInfo, GetCurrentArchitecture())
  467. #define CallQTVRInterceptProc(userRoutine, qtvr, qtvrMsg, refCon, cancel)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppQTVRInterceptProcInfo, (qtvr), (qtvrMsg), (refCon), (cancel))
  468. /*
  469.   =================================================================================================
  470.     Initialization QTVR calls 
  471.   -------------------------------------------------------------------------------------------------
  472.    Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) and only work on Non-Macintosh platforms
  473. */
  474. #if !TARGET_OS_MAC
  475. EXTERN_API_C( OSErr )
  476. InitializeQTVR                    (void);
  477.  
  478. EXTERN_API_C( OSErr )
  479. TerminateQTVR                    (void);
  480.  
  481. #endif  /* !TARGET_OS_MAC */
  482.  
  483. /*
  484.   =================================================================================================
  485.     General QTVR calls 
  486.   -------------------------------------------------------------------------------------------------
  487. */
  488. EXTERN_API_C( Track )
  489. QTVRGetQTVRTrack                (Movie                     theMovie,
  490.                                  SInt32                 index);
  491.  
  492. EXTERN_API_C( OSErr )
  493. QTVRGetQTVRInstance                (QTVRInstance *            qtvr,
  494.                                  Track                     qtvrTrack,
  495.                                  MovieController         mc);
  496.  
  497. /*
  498.   =================================================================================================
  499.     Viewing Angles and Zooming 
  500.   -------------------------------------------------------------------------------------------------
  501. */
  502.  
  503. EXTERN_API_C( OSErr )
  504. QTVRSetPanAngle                    (QTVRInstance             qtvr,
  505.                                  float                     panAngle);
  506.  
  507. EXTERN_API_C( float )
  508. QTVRGetPanAngle                    (QTVRInstance             qtvr);
  509.  
  510. EXTERN_API_C( OSErr )
  511. QTVRSetTiltAngle                (QTVRInstance             qtvr,
  512.                                  float                     tiltAngle);
  513.  
  514. EXTERN_API_C( float )
  515. QTVRGetTiltAngle                (QTVRInstance             qtvr);
  516.  
  517. EXTERN_API_C( OSErr )
  518. QTVRSetFieldOfView                (QTVRInstance             qtvr,
  519.                                  float                     fieldOfView);
  520.  
  521. EXTERN_API_C( float )
  522. QTVRGetFieldOfView                (QTVRInstance             qtvr);
  523.  
  524. EXTERN_API_C( OSErr )
  525. QTVRShowDefaultView                (QTVRInstance             qtvr);
  526.  
  527. /* Object Specific*/
  528. EXTERN_API_C( OSErr )
  529. QTVRSetViewCenter                (QTVRInstance             qtvr,
  530.                                  const QTVRFloatPoint *    viewCenter);
  531.  
  532. EXTERN_API_C( OSErr )
  533. QTVRGetViewCenter                (QTVRInstance             qtvr,
  534.                                  QTVRFloatPoint *        viewCenter);
  535.  
  536. EXTERN_API_C( OSErr )
  537. QTVRNudge                        (QTVRInstance             qtvr,
  538.                                  QTVRNudgeControl         direction);
  539.  
  540. /* QTVRInteractionNudge requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  541. EXTERN_API_C( OSErr )
  542. QTVRInteractionNudge            (QTVRInstance             qtvr,
  543.                                  QTVRNudgeControl         direction);
  544.  
  545. /*
  546.   =================================================================================================
  547.     Scene and Node Location Information 
  548.   -------------------------------------------------------------------------------------------------
  549. */
  550.  
  551. EXTERN_API_C( OSErr )
  552. QTVRGetVRWorld                    (QTVRInstance             qtvr,
  553.                                  QTAtomContainer *        VRWorld);
  554.  
  555. EXTERN_API_C( OSErr )
  556. QTVRGetNodeInfo                    (QTVRInstance             qtvr,
  557.                                  UInt32                 nodeID,
  558.                                  QTAtomContainer *        nodeInfo);
  559.  
  560. EXTERN_API_C( OSErr )
  561. QTVRGoToNodeID                    (QTVRInstance             qtvr,
  562.                                  UInt32                 nodeID);
  563.  
  564. EXTERN_API_C( UInt32 )
  565. QTVRGetCurrentNodeID            (QTVRInstance             qtvr);
  566.  
  567. EXTERN_API_C( OSType )
  568. QTVRGetNodeType                    (QTVRInstance             qtvr,
  569.                                  UInt32                 nodeID);
  570.  
  571. /*
  572.   =================================================================================================
  573.     Hot Spot related calls 
  574.   -------------------------------------------------------------------------------------------------
  575. */
  576.  
  577. EXTERN_API_C( OSErr )
  578. QTVRPtToHotSpotID                (QTVRInstance             qtvr,
  579.                                  Point                     pt,
  580.                                  UInt32 *                hotSpotID);
  581.  
  582. /* QTVRGetHotSpotType requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  583. EXTERN_API_C( OSErr )
  584. QTVRGetHotSpotType                (QTVRInstance             qtvr,
  585.                                  UInt32                 hotSpotID,
  586.                                  OSType *                hotSpotType);
  587.  
  588. EXTERN_API_C( OSErr )
  589. QTVRTriggerHotSpot                (QTVRInstance             qtvr,
  590.                                  UInt32                 hotSpotID,
  591.                                  QTAtomContainer         nodeInfo,
  592.                                  QTAtom                 selectedAtom);
  593.  
  594. EXTERN_API_C( OSErr )
  595. QTVRSetMouseOverHotSpotProc        (QTVRInstance             qtvr,
  596.                                  QTVRMouseOverHotSpotUPP  mouseOverHotSpotProc,
  597.                                  SInt32                 refCon,
  598.                                  UInt32                 flags);
  599.  
  600. EXTERN_API_C( OSErr )
  601. QTVREnableHotSpot                (QTVRInstance             qtvr,
  602.                                  UInt32                 enableFlag,
  603.                                  UInt32                 hotSpotValue,
  604.                                  Boolean                 enable);
  605.  
  606. EXTERN_API_C( UInt32 )
  607. QTVRGetVisibleHotSpots            (QTVRInstance             qtvr,
  608.                                  Handle                 hotSpots);
  609.  
  610. EXTERN_API_C( OSErr )
  611. QTVRGetHotSpotRegion            (QTVRInstance             qtvr,
  612.                                  UInt32                 hotSpotID,
  613.                                  RgnHandle                 hotSpotRegion);
  614.  
  615. /*
  616.   =================================================================================================
  617.     Event & Cursor Handling Calls 
  618.   -------------------------------------------------------------------------------------------------
  619. */
  620.  
  621. EXTERN_API_C( OSErr )
  622. QTVRSetMouseOverTracking        (QTVRInstance             qtvr,
  623.                                  Boolean                 enable);
  624.  
  625. EXTERN_API_C( Boolean )
  626. QTVRGetMouseOverTracking        (QTVRInstance             qtvr);
  627.  
  628. EXTERN_API_C( OSErr )
  629. QTVRSetMouseDownTracking        (QTVRInstance             qtvr,
  630.                                  Boolean                 enable);
  631.  
  632. EXTERN_API_C( Boolean )
  633. QTVRGetMouseDownTracking        (QTVRInstance             qtvr);
  634.  
  635. EXTERN_API_C( OSErr )
  636. QTVRMouseEnter                    (QTVRInstance             qtvr,
  637.                                  Point                     pt,
  638.                                  UInt32 *                hotSpotID,
  639.                                  WindowPtr                 w);
  640.  
  641. EXTERN_API_C( OSErr )
  642. QTVRMouseWithin                    (QTVRInstance             qtvr,
  643.                                  Point                     pt,
  644.                                  UInt32 *                hotSpotID,
  645.                                  WindowPtr                 w);
  646.  
  647. EXTERN_API_C( OSErr )
  648. QTVRMouseLeave                    (QTVRInstance             qtvr,
  649.                                  Point                     pt,
  650.                                  WindowPtr                 w);
  651.  
  652. EXTERN_API_C( OSErr )
  653. QTVRMouseDown                    (QTVRInstance             qtvr,
  654.                                  Point                     pt,
  655.                                  UInt32                 when,
  656.                                  UInt16                 modifiers,
  657.                                  UInt32 *                hotSpotID,
  658.                                  WindowPtr                 w);
  659.  
  660. EXTERN_API_C( OSErr )
  661. QTVRMouseStillDown                (QTVRInstance             qtvr,
  662.                                  Point                     pt,
  663.                                  UInt32 *                hotSpotID,
  664.                                  WindowPtr                 w);
  665.  
  666. EXTERN_API_C( OSErr )
  667. QTVRMouseUp                        (QTVRInstance             qtvr,
  668.                                  Point                     pt,
  669.                                  UInt32 *                hotSpotID,
  670.                                  WindowPtr                 w);
  671.  
  672. /* These require QTVR 2.01 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion01)*/
  673. EXTERN_API_C( OSErr )
  674. QTVRMouseStillDownExtended        (QTVRInstance             qtvr,
  675.                                  Point                     pt,
  676.                                  UInt32 *                hotSpotID,
  677.                                  WindowPtr                 w,
  678.                                  UInt32                 when,
  679.                                  UInt16                 modifiers);
  680.  
  681. EXTERN_API_C( OSErr )
  682. QTVRMouseUpExtended                (QTVRInstance             qtvr,
  683.                                  Point                     pt,
  684.                                  UInt32 *                hotSpotID,
  685.                                  WindowPtr                 w,
  686.                                  UInt32                 when,
  687.                                  UInt16                 modifiers);
  688.  
  689. /*
  690.   =================================================================================================
  691.     Intercept Routines 
  692.   -------------------------------------------------------------------------------------------------
  693. */
  694.  
  695. EXTERN_API_C( OSErr )
  696. QTVRInstallInterceptProc        (QTVRInstance             qtvr,
  697.                                  QTVRProcSelector         selector,
  698.                                  QTVRInterceptUPP         interceptProc,
  699.                                  SInt32                 refCon,
  700.                                  UInt32                 flags);
  701.  
  702. EXTERN_API_C( OSErr )
  703. QTVRCallInterceptedProc            (QTVRInstance             qtvr,
  704.                                  QTVRInterceptRecord *    qtvrMsg);
  705.  
  706. /*
  707.   =================================================================================================
  708.     Object Movie Specific Calls 
  709.   -------------------------------------------------------------------------------------------------
  710.    QTVRGetCurrentMouseMode requires QTRVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)
  711. */
  712. EXTERN_API_C( UInt32 )
  713. QTVRGetCurrentMouseMode            (QTVRInstance             qtvr);
  714.  
  715. EXTERN_API_C( OSErr )
  716. QTVRSetFrameRate                (QTVRInstance             qtvr,
  717.                                  float                     rate);
  718.  
  719. EXTERN_API_C( float )
  720. QTVRGetFrameRate                (QTVRInstance             qtvr);
  721.  
  722. EXTERN_API_C( OSErr )
  723. QTVRSetViewRate                    (QTVRInstance             qtvr,
  724.                                  float                     rate);
  725.  
  726. EXTERN_API_C( float )
  727. QTVRGetViewRate                    (QTVRInstance             qtvr);
  728.  
  729. EXTERN_API_C( OSErr )
  730. QTVRSetViewCurrentTime            (QTVRInstance             qtvr,
  731.                                  TimeValue                 time);
  732.  
  733. EXTERN_API_C( TimeValue )
  734. QTVRGetViewCurrentTime            (QTVRInstance             qtvr);
  735.  
  736. EXTERN_API_C( TimeValue )
  737. QTVRGetCurrentViewDuration        (QTVRInstance             qtvr);
  738.  
  739. /*
  740.   =================================================================================================
  741.    View State Calls - QTVR Object Only
  742.   -------------------------------------------------------------------------------------------------
  743. */
  744.  
  745. EXTERN_API_C( OSErr )
  746. QTVRSetViewState                (QTVRInstance             qtvr,
  747.                                  QTVRViewStateType         viewStateType,
  748.                                  UInt16                 state);
  749.  
  750. EXTERN_API_C( OSErr )
  751. QTVRGetViewState                (QTVRInstance             qtvr,
  752.                                  QTVRViewStateType         viewStateType,
  753.                                  UInt16 *                state);
  754.  
  755. EXTERN_API_C( UInt16 )
  756. QTVRGetViewStateCount            (QTVRInstance             qtvr);
  757.  
  758. EXTERN_API_C( OSErr )
  759. QTVRSetAnimationSetting            (QTVRInstance             qtvr,
  760.                                  QTVRObjectAnimationSetting  setting,
  761.                                  Boolean                 enable);
  762.  
  763. EXTERN_API_C( OSErr )
  764. QTVRGetAnimationSetting            (QTVRInstance             qtvr,
  765.                                  QTVRObjectAnimationSetting  setting,
  766.                                  Boolean *                enable);
  767.  
  768. EXTERN_API_C( OSErr )
  769. QTVRSetControlSetting            (QTVRInstance             qtvr,
  770.                                  QTVRControlSetting     setting,
  771.                                  Boolean                 enable);
  772.  
  773. EXTERN_API_C( OSErr )
  774. QTVRGetControlSetting            (QTVRInstance             qtvr,
  775.                                  QTVRControlSetting     setting,
  776.                                  Boolean *                enable);
  777.  
  778. EXTERN_API_C( OSErr )
  779. QTVREnableFrameAnimation        (QTVRInstance             qtvr,
  780.                                  Boolean                 enable);
  781.  
  782. EXTERN_API_C( Boolean )
  783. QTVRGetFrameAnimation            (QTVRInstance             qtvr);
  784.  
  785. EXTERN_API_C( OSErr )
  786. QTVREnableViewAnimation            (QTVRInstance             qtvr,
  787.                                  Boolean                 enable);
  788.  
  789. EXTERN_API_C( Boolean )
  790. QTVRGetViewAnimation            (QTVRInstance             qtvr);
  791.  
  792.  
  793. /*
  794.   =================================================================================================
  795.     Imaging Characteristics 
  796.   -------------------------------------------------------------------------------------------------
  797. */
  798.  
  799. EXTERN_API_C( OSErr )
  800. QTVRSetVisible                    (QTVRInstance             qtvr,
  801.                                  Boolean                 visible);
  802.  
  803. EXTERN_API_C( Boolean )
  804. QTVRGetVisible                    (QTVRInstance             qtvr);
  805.  
  806. EXTERN_API_C( OSErr )
  807. QTVRSetImagingProperty            (QTVRInstance             qtvr,
  808.                                  QTVRImagingMode         imagingMode,
  809.                                  UInt32                 imagingProperty,
  810.                                  SInt32                 propertyValue);
  811.  
  812. EXTERN_API_C( OSErr )
  813. QTVRGetImagingProperty            (QTVRInstance             qtvr,
  814.                                  QTVRImagingMode         imagingMode,
  815.                                  UInt32                 imagingProperty,
  816.                                  SInt32 *                propertyValue);
  817.  
  818. EXTERN_API_C( OSErr )
  819. QTVRUpdate                        (QTVRInstance             qtvr,
  820.                                  QTVRImagingMode         imagingMode);
  821.  
  822. EXTERN_API_C( OSErr )
  823. QTVRBeginUpdateStream            (QTVRInstance             qtvr,
  824.                                  QTVRImagingMode         imagingMode);
  825.  
  826. EXTERN_API_C( OSErr )
  827. QTVREndUpdateStream                (QTVRInstance             qtvr);
  828.  
  829. EXTERN_API_C( OSErr )
  830. QTVRSetTransitionProperty        (QTVRInstance             qtvr,
  831.                                  UInt32                 transitionType,
  832.                                  UInt32                 transitionProperty,
  833.                                  SInt32                 transitionValue);
  834.  
  835. EXTERN_API_C( OSErr )
  836. QTVREnableTransition            (QTVRInstance             qtvr,
  837.                                  UInt32                 transitionType,
  838.                                  Boolean                 enable);
  839.  
  840. /*
  841.   =================================================================================================
  842.     Basic Conversion and Math Routines 
  843.   -------------------------------------------------------------------------------------------------
  844. */
  845.  
  846. EXTERN_API_C( OSErr )
  847. QTVRSetAngularUnits                (QTVRInstance             qtvr,
  848.                                  QTVRAngularUnits         units);
  849.  
  850. EXTERN_API_C( QTVRAngularUnits )
  851. QTVRGetAngularUnits                (QTVRInstance             qtvr);
  852.  
  853. /* Pano specific routines*/
  854. EXTERN_API_C( OSErr )
  855. QTVRPtToAngles                    (QTVRInstance             qtvr,
  856.                                  Point                     pt,
  857.                                  float *                panAngle,
  858.                                  float *                tiltAngle);
  859.  
  860. EXTERN_API_C( OSErr )
  861. QTVRCoordToAngles                (QTVRInstance             qtvr,
  862.                                  QTVRFloatPoint *        coord,
  863.                                  float *                panAngle,
  864.                                  float *                tiltAngle);
  865.  
  866. EXTERN_API_C( OSErr )
  867. QTVRAnglesToCoord                (QTVRInstance             qtvr,
  868.                                  float                     panAngle,
  869.                                  float                     tiltAngle,
  870.                                  QTVRFloatPoint *        coord);
  871.  
  872. /* Object specific routines*/
  873. EXTERN_API_C( short )
  874. QTVRPanToColumn                    (QTVRInstance             qtvr,
  875.                                  float                     panAngle);
  876.  
  877. /* zero based    */
  878. EXTERN_API_C( float )
  879. QTVRColumnToPan                    (QTVRInstance             qtvr,
  880.                                  short                     column);
  881.  
  882. /* zero based    */
  883. EXTERN_API_C( short )
  884. QTVRTiltToRow                    (QTVRInstance             qtvr,
  885.                                  float                     tiltAngle);
  886.  
  887. /* zero based    */
  888. EXTERN_API_C( float )
  889. QTVRRowToTilt                    (QTVRInstance             qtvr,
  890.                                  short                     row);
  891.  
  892. /* zero based                */
  893. EXTERN_API_C( OSErr )
  894. QTVRWrapAndConstrain            (QTVRInstance             qtvr,
  895.                                  short                     kind,
  896.                                  float                     value,
  897.                                  float *                result);
  898.  
  899.  
  900. /*
  901.   =================================================================================================
  902.     Interaction Routines 
  903.   -------------------------------------------------------------------------------------------------
  904. */
  905.  
  906. EXTERN_API_C( OSErr )
  907. QTVRSetEnteringNodeProc            (QTVRInstance             qtvr,
  908.                                  QTVREnteringNodeUPP     enteringNodeProc,
  909.                                  SInt32                 refCon,
  910.                                  UInt32                 flags);
  911.  
  912. EXTERN_API_C( OSErr )
  913. QTVRSetLeavingNodeProc            (QTVRInstance             qtvr,
  914.                                  QTVRLeavingNodeUPP     leavingNodeProc,
  915.                                  SInt32                 refCon,
  916.                                  UInt32                 flags);
  917.  
  918. EXTERN_API_C( OSErr )
  919. QTVRSetInteractionProperty        (QTVRInstance             qtvr,
  920.                                  UInt32                 property,
  921.                                  void *                    value);
  922.  
  923. EXTERN_API_C( OSErr )
  924. QTVRGetInteractionProperty        (QTVRInstance             qtvr,
  925.                                  UInt32                 property,
  926.                                  void *                    value);
  927.  
  928. EXTERN_API_C( OSErr )
  929. QTVRReplaceCursor                (QTVRInstance             qtvr,
  930.                                  QTVRCursorRecord *        cursRecord);
  931.  
  932. /*
  933.   =================================================================================================
  934.     Viewing Limits and Constraints 
  935.   -------------------------------------------------------------------------------------------------
  936. */
  937.  
  938. EXTERN_API_C( OSErr )
  939. QTVRGetViewingLimits            (QTVRInstance             qtvr,
  940.                                  UInt16                 kind,
  941.                                  float *                minValue,
  942.                                  float *                maxValue);
  943.  
  944. EXTERN_API_C( UInt32 )
  945. QTVRGetConstraintStatus            (QTVRInstance             qtvr);
  946.  
  947. EXTERN_API_C( OSErr )
  948. QTVRGetConstraints                (QTVRInstance             qtvr,
  949.                                  UInt16                 kind,
  950.                                  float *                minValue,
  951.                                  float *                maxValue);
  952.  
  953. EXTERN_API_C( OSErr )
  954. QTVRSetConstraints                (QTVRInstance             qtvr,
  955.                                  UInt16                 kind,
  956.                                  float                     minValue,
  957.                                  float                     maxValue);
  958.  
  959.  
  960. /*
  961.   =================================================================================================
  962.     Back Buffer Memory Management 
  963.   -------------------------------------------------------------------------------------------------
  964. */
  965.  
  966. EXTERN_API_C( OSErr )
  967. QTVRGetAvailableResolutions        (QTVRInstance             qtvr,
  968.                                  UInt16 *                resolutionsMask);
  969.  
  970. /* These require QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  971. EXTERN_API_C( OSErr )
  972. QTVRGetBackBufferMemInfo        (QTVRInstance             qtvr,
  973.                                  UInt32                 geometry,
  974.                                  UInt16                 resolution,
  975.                                  UInt32                 cachePixelFormat,
  976.                                  SInt32 *                minCacheBytes,
  977.                                  SInt32 *                suggestedCacheBytes,
  978.                                  SInt32 *                fullCacheBytes);
  979.  
  980. EXTERN_API_C( OSErr )
  981. QTVRGetBackBufferSettings        (QTVRInstance             qtvr,
  982.                                  UInt32 *                geometry,
  983.                                  UInt16 *                resolution,
  984.                                  UInt32 *                cachePixelFormat,
  985.                                  SInt16 *                cacheSize);
  986.  
  987. EXTERN_API_C( OSErr )
  988. QTVRSetBackBufferPrefs            (QTVRInstance             qtvr,
  989.                                  UInt32                 geometry,
  990.                                  UInt16                 resolution,
  991.                                  UInt32                 cachePixelFormat,
  992.                                  SInt16                 cacheSize);
  993.  
  994. #if QTVR_OLD_CALLS
  995. #if TARGET_OS_MAC
  996. /*
  997.    These ≈Cache≈ calls have been replaced with the ≈BackBuffer≈ versions above.
  998.    However, the ≈BackBuffer≈ calls require QuickTime VR 2.1 to work;
  999.     these calls will work with QuickTime VR 2.0 and 2.0.1, but only on a Macintosh.
  1000. */
  1001. EXTERN_API_C( OSErr )
  1002. QTVRGetCacheMemInfo                (QTVRInstance             qtvr,
  1003.                                  UInt16                 resolution,
  1004.                                  SInt16                 cacheDepth,
  1005.                                  SInt32 *                minCacheBytes,
  1006.                                  SInt32 *                suggestedCacheBytes,
  1007.                                  SInt32 *                fullCacheBytes);
  1008.  
  1009. EXTERN_API_C( OSErr )
  1010. QTVRGetCacheSettings            (QTVRInstance             qtvr,
  1011.                                  UInt16 *                resolution,
  1012.                                  SInt16 *                cacheDepth,
  1013.                                  SInt16 *                cacheSize);
  1014.  
  1015. EXTERN_API_C( OSErr )
  1016. QTVRSetCachePrefs                (QTVRInstance             qtvr,
  1017.                                  UInt16                 resolution,
  1018.                                  SInt16                 cacheDepth,
  1019.                                  SInt16                 cacheSize);
  1020.  
  1021. #endif  /* TARGET_OS_MAC */
  1022.  
  1023. #endif  /* QTVR_OLD_CALLS */
  1024.  
  1025. /*
  1026.   =================================================================================================
  1027.     Buffer Access 
  1028.   -------------------------------------------------------------------------------------------------
  1029. */
  1030.  
  1031. EXTERN_API_C( OSErr )
  1032. QTVRSetPrescreenImagingCompleteProc (QTVRInstance         qtvr,
  1033.                                  QTVRImagingCompleteUPP  imagingCompleteProc,
  1034.                                  SInt32                 refCon,
  1035.                                  UInt32                 flags);
  1036.  
  1037. EXTERN_API_C( OSErr )
  1038. QTVRSetBackBufferImagingProc    (QTVRInstance             qtvr,
  1039.                                  QTVRBackBufferImagingUPP  backBufferImagingProc,
  1040.                                  UInt16                 numAreas,
  1041.                                  QTVRAreaOfInterest     areasOfInterest[],
  1042.                                  SInt32                 refCon);
  1043.  
  1044. EXTERN_API_C( OSErr )
  1045. QTVRRefreshBackBuffer            (QTVRInstance             qtvr,
  1046.                                  UInt32                 flags);
  1047.  
  1048.  
  1049.  
  1050. /*
  1051.   =================================================================================================
  1052.     Old Names
  1053.   -------------------------------------------------------------------------------------------------
  1054. */
  1055. #if OLDROUTINENAMES
  1056. typedef QTVRCursorRecord                 CursorRecord;
  1057. typedef QTVRAreaOfInterest                 AreaOfInterest;
  1058. typedef QTVRFloatPoint                     FloatPoint;
  1059. typedef QTVRLeavingNodeProcPtr             LeavingNodeProcPtr;
  1060. typedef QTVRLeavingNodeUPP                 LeavingNodeUPP;
  1061. typedef QTVREnteringNodeProcPtr         EnteringNodeProcPtr;
  1062. typedef QTVREnteringNodeUPP             EnteringNodeUPP;
  1063. typedef QTVRMouseOverHotSpotProcPtr     MouseOverHotSpotProcPtr;
  1064. typedef QTVRMouseOverHotSpotUPP         MouseOverHotSpotUPP;
  1065. typedef QTVRImagingCompleteProcPtr         ImagingCompleteProcPtr;
  1066. typedef QTVRImagingCompleteUPP             ImagingCompleteUPP;
  1067. typedef QTVRBackBufferImagingProcPtr     BackBufferImagingProcPtr;
  1068. typedef QTVRBackBufferImagingUPP         BackBufferImagingUPP;
  1069. #endif  /* OLDROUTINENAMES */
  1070.  
  1071.  
  1072.  
  1073. #if PRAGMA_STRUCT_ALIGN
  1074.     #pragma options align=reset
  1075. #elif PRAGMA_STRUCT_PACKPUSH
  1076.     #pragma pack(pop)
  1077. #elif PRAGMA_STRUCT_PACK
  1078.     #pragma pack()
  1079. #endif
  1080.  
  1081. #ifdef PRAGMA_IMPORT_OFF
  1082. #pragma import off
  1083. #elif PRAGMA_IMPORT
  1084. #pragma import reset
  1085. #endif
  1086.  
  1087. #ifdef __cplusplus
  1088. }
  1089. #endif
  1090.  
  1091. #endif /* __QUICKTIMEVR__ */
  1092.  
  1093.